package facade;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.Persistence;
import javax.persistence.Query;

import Entidade.Apresentacao;
import Entidade.Material;
import VO.ApresentacaoVO;
import VO.MaterialVO;

public class FacadeApresentacaoImpl implements FacadeApresentacao {

	public static String entidade ="sistemaDarlan";
	
	public ApresentacaoVO buscaApresentacao(Integer id) throws TrataErroPersistecia {

		Apresentacao a = new Apresentacao();
		ApresentacaoVO vo = new ApresentacaoVO();
		
		 try{
			  EntityManager manager = Persistence.createEntityManagerFactory(entidade).createEntityManager();
			manager.getTransaction().begin();
		     a = (Apresentacao) manager.find(Apresentacao.class,id);
		     
		     vo.setAnexo(a.getAnexo());
		     vo.setDescricao(a.getDescricao());
		     vo.setId(a.getId());
		     vo.setNome(a.getNome());
		     vo.setIdioma(a.getIdioma());
		    
		    manager.getTransaction().commit();
		    manager.close();
		    
		    return vo;
		    
		  }catch  (Exception e){
			    e.getMessage();
			
		  }
		
		return null;
	}

	public List<ApresentacaoVO> buscaTodosApresentacao()
			throws TrataErroPersistecia {
		try{
		    EntityManager manager = Persistence.createEntityManagerFactory(entidade).createEntityManager();
			Query q = manager.createQuery("from Apresentacao a");
		
			List<ApresentacaoVO>  aVo= new ArrayList<ApresentacaoVO>(); 
			
			List<Apresentacao> resultList =q.getResultList();
			
			for(Apresentacao m : resultList){
				
				ApresentacaoVO vo = new ApresentacaoVO();
				vo.setAnexo(m.getAnexo());
				vo.setDescricao(m.getDescricao());
				vo.setNome(m.getNome());
				vo.setId(m.getId());
				vo.setIdioma(m.getIdioma());
				
				aVo.add(vo);
			}
				
			
			
			return aVo;
			
		}catch (Exception e){
			e.getMessage();
		}
		return null;
	}

	public void excluirApresentacao(ApresentacaoVO vo)
			throws TrataErroPersistecia {
		Apresentacao a = new Apresentacao();
		 try{
			  EntityManager manager = Persistence.createEntityManagerFactory(entidade).createEntityManager();
		     manager.getTransaction().begin();
		     
		   
		    a = manager.find(Apresentacao.class,vo.getId());
		     
		     
		     manager.merge(a);
		     manager.remove(a);
		   
		    manager.getTransaction().commit();
		    manager.close();
		    
		  
		  }catch  (Exception e){
			    e.getMessage();
			
		  }
		
	}

	public void salvar(ApresentacaoVO vo) throws TrataErroPersistecia {
		Apresentacao a = new Apresentacao();
		a.setAnexo(vo.getAnexo());
		a.setDescricao(vo.getDescricao());
		a.setNome(vo.getNome());
		a.setIdioma(vo.getIdioma());
		
		
	  try{
		  EntityManager manager = Persistence.createEntityManagerFactory(entidade).createEntityManager();
		manager.getTransaction().begin();
	  
	    manager.persist(a);
	
	    manager.getTransaction().commit();
	    manager.close();
	    
	  }catch  (Exception e){
		    e.getMessage();
		
	  }
		
	}

}
